package edu.uoc.tds.cliente;

import edu.uoc.tds.bean.CentroDocente;
import edu.uoc.tds.bean.Universidad;
import edu.uoc.tds.bean.Usuario;
import edu.uoc.tds.common.RemotoInterface;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;

import java.awt.Rectangle;
import java.awt.Font;

import java.rmi.RemoteException;

import edu.uoc.tds.common.UtilLenguaje;
import edu.uoc.tds.common.Variables;
import java.rmi.Naming;

public class Cliente extends JFrame {

     

    private static final long serialVersionUID = 1L;
    public  static JPanel jContentPane = null;
    private JMenuBar menu = null;
    private JMenu menuInici = null;
    private JMenuItem menuInici2 = null;
    private JLabel missatge = null;
    private JMenuItem menuMantenimiento1 = null;
    private JMenuItem menuMantenimiento2 = null;
    private JMenuItem menuEventos1 = null;
    private JMenuItem menuEstadisticas1 = null;
    private JMenuItem menuEstadisticas2 = null;
    private JMenuItem menuEstadisticas3 = null;
    private JMenuItem menuEstadisticas4 = null;
    private JMenuItem menuInscripciones1 = null;
    private JMenuItem menuInscripciones2 = null;
    private UtilLenguaje txt = null;
    private RemotoInterface objServeis = null;
   

    public static String usuarioLogado=null;
    public static JMenu menuMantenimiento = null;
    public static JMenu menuEventos = null;
    public static JMenu menuEstadisticas = null;
    public static JMenu menuInscripciones = null;
    public static JMenuItem menuInici1 = null;
    public static boolean cnnct = false;
    

    public Cliente() {
        super();
        fitxerMessages();
        initialize(1);
        
    }

    private void initialize(int pAccio) {
        int accio = pAccio;
        setSize(800,600);
        this.setJMenuBar(getMenu());
        switch (accio) {
            case 1:

                this.setContentPane(getJContentPane());
                break;

            case 2:
                
                PantallaConsultaUsuario alta;
                try {
                    alta = new PantallaConsultaUsuario(objServeis);
                    this.setContentPane(alta);
                    this.setVisible(true);

                   

                } catch (RemoteException eRe) {
                    JOptionPane.showMessageDialog(null,
                            txt.getMessage("err.remoto") + "\n" + eRe.getMessage(),
                            txt.getMessage("err"), JOptionPane.ERROR_MESSAGE);
                }
                break;

            case 3:
                PantallaConsultaCentroDocente centro;
                try {
                    centro = new PantallaConsultaCentroDocente(objServeis);
                    this.setContentPane(centro);
                    this.setVisible(true);

                } catch (RemoteException eRe) {
                    JOptionPane.showMessageDialog(null,
                            txt.getMessage("err.remoto") + "\n" + eRe.getMessage(),
                            txt.getMessage("err"), JOptionPane.ERROR_MESSAGE);
                }
                break;

            case 4:
                try {
                	PantallaCalendarioEventos eventos = new PantallaCalendarioEventos(objServeis);
                	eventos.setVisible(true);
                	JPanel principal = new JPanel();
                	principal.add(eventos);
                    this.setContentPane(principal);
                    this.setVisible(true);
                } catch (Exception eRe) {
                    JOptionPane.showMessageDialog(null,
                            txt.getMessage("err.remoto") + "\n" + eRe.getMessage(),
                            txt.getMessage("err"), JOptionPane.ERROR_MESSAGE);
                }
            
            break;

            case 5:
                PantallaInformePorcentajeAsistenciaEventos informe1;
                try {
                    informe1 = new PantallaInformePorcentajeAsistenciaEventos(objServeis);
                    this.setContentPane(informe1);
                    this.setVisible(true);

                } catch (Exception eRe) {
                    JOptionPane.showMessageDialog(null,
                            txt.getMessage("err.remoto") + "\n" + eRe.getMessage(),
                            txt.getMessage("err"), JOptionPane.ERROR_MESSAGE);
                }
            break;

            case 6:
                // Informe ingresos
                PantallaInformeIngresosTotales informe2;
                try {
                    informe2 = new PantallaInformeIngresosTotales(objServeis);
                    this.setContentPane(informe2);
                    this.setVisible(true);

                } catch (Exception eRe) {
                    JOptionPane.showMessageDialog(null,
                            txt.getMessage("err.remoto") + "\n" + eRe.getMessage(),
                            txt.getMessage("err"), JOptionPane.ERROR_MESSAGE);
                }
            break;

            case 7:
                // Informe asistentes a evento
                PantallaInformeAsistentesEvento informe3;
                try {
                    informe3 = new PantallaInformeAsistentesEvento(objServeis);
                    this.setContentPane(informe3);
                    this.setVisible(true);

                } catch (Exception eRe) {
                    JOptionPane.showMessageDialog(null,
                            txt.getMessage("err.remoto") + "\n" + eRe.getMessage(),
                            txt.getMessage("err"), JOptionPane.ERROR_MESSAGE);
                }
            break;

            case 8:
                // Informe eventos asistente
                PantallaInformeEventosAsistente informe4;
                try {
                    informe4 = new PantallaInformeEventosAsistente(objServeis);
                    this.setContentPane(informe4);
                    this.setVisible(true);

                } catch (Exception eRe) {
                    JOptionPane.showMessageDialog(null,
                            txt.getMessage("err.remoto") + "\n" + eRe.getMessage(),
                            txt.getMessage("err"), JOptionPane.ERROR_MESSAGE);
                }
            break;


            case 9:
            PantallaInscripcion inscripcion;
                try {
                    inscripcion = new PantallaInscripcion(objServeis);
                    this.setContentPane(inscripcion);
                    this.setVisible(true);

                } catch (Exception eRe) {
                    JOptionPane.showMessageDialog(null,
                            txt.getMessage("err.remoto") + "\n" + eRe.getMessage(),
                            txt.getMessage("err"), JOptionPane.ERROR_MESSAGE);
                }

            break;

             case 10:

		PantallaInscripcionHistorico insH;
                try
		{
                    insH= new PantallaInscripcionHistorico(objServeis);
                    this.setContentPane(insH);
                    this.setVisible(true);

                }

		catch (Exception eRe)
		{
                    JOptionPane.showMessageDialog(null,
                    txt.getMessage("err.remoto") + "\n" + eRe.getMessage(),
                    txt.getMessage("err"), JOptionPane.ERROR_MESSAGE);
                }
                break;


            case 11:
              PantallaContrasena contrasena;
             
                try {
                    objServeis = (RemotoInterface) Naming.lookup("//localhost/Remoto");
                    contrasena=new PantallaContrasena(objServeis);
                    this.setContentPane(contrasena);
                    this.setVisible(true);
                    
                   
                } catch (Exception eRe) {
                    JOptionPane.showMessageDialog(null,
                            txt.getMessage("err.remoto") + "\n" + eRe.getMessage(),
                            txt.getMessage("err"), JOptionPane.ERROR_MESSAGE);
                }
                break;
        }
        this.setTitle(txt.getMessage("menu.titulo"));
        
        setShow();
    }

    private void fitxerMessages() {

        boolean hiHaFitxerMessages = txt.setDefaultLanguage("i18n/messages");
        if (!hiHaFitxerMessages) {
            System.exit(-1);
        }
    }

    public void setShow() {
        if (!cnnct) {
            menuInici1.setEnabled(true);
            menuMantenimiento.setEnabled(false);
            menuEventos.setEnabled(false);
            menuEstadisticas.setEnabled(false);
            menuInscripciones.setEnabled(false);
        } else {
            menuInici1.setEnabled(false);
        //    menuMantenimiento.setEnabled(true);
          //  menuMantenimiento.setEnabled(true);
            //menuEventos.setEnabled(true);
            //menuEstadisticas.setEnabled(true);
            //menuInscripciones.setEnabled(true);
        }
    }

    private JPanel getJContentPane() {
        if (jContentPane == null) {
            missatge = new JLabel();
            missatge.setBounds(new Rectangle(70, 150, 425, 24));
            missatge.setFont(new Font("Dialog", Font.BOLD, 22));
            missatge.setText(txt.getMessage("menu.mensaje"));
            jContentPane = new JPanel();
            jContentPane.setLayout(null);
            jContentPane.add(missatge, null);
        }
        return jContentPane;
    }

    private JMenuBar getMenu() {
        if (menu == null) {
            menu = new JMenuBar();
            menu.add(getMenuInicio());
            menu.add(getMenuMantenimiento());
            menu.add(getMenuEventos());
            menu.add(getMenuEstadisticas());
            menu.add(getMenuInscripciones());
        }
        return menu;
    }

    private JMenu getMenuInicio() {
        if (menuInici == null) {
            menuInici = new JMenu();
            menuInici.setText(txt.getMessage("menu.inicio"));
            menuInici.add(getMenuInici1());
            menuInici.add(getMenuInici2());
        }
        return menuInici;
    }

    private JMenu getMenuMantenimiento() {
        if (menuMantenimiento == null) {
            menuMantenimiento = new JMenu();
            menuMantenimiento.setText(txt.getMessage("menu.mantenimiento"));
            menuMantenimiento.add(getMenuMantenimiento1());
            menuMantenimiento.add(getMenuMantenimiento2());
        }
        return menuMantenimiento;
    }

    private JMenuItem getMenuInici1() {
        if (menuInici1 == null) {
            menuInici1 = new JMenuItem();
            menuInici1.setText(txt.getMessage("menu.inicio.item1"));
            menuInici1.addActionListener(new java.awt.event.ActionListener() {

                public void actionPerformed(java.awt.event.ActionEvent e) {
                  initialize(11);
                }
            });
             
        }
        
        return menuInici1;
    }

    private JMenuItem getMenuInici2() {
        if (menuInici2 == null) {
            menuInici2 = new JMenuItem();
            menuInici2.setText(txt.getMessage("menu.inicio.item2"));
            menuInici2.addActionListener(new java.awt.event.ActionListener() {

                public void actionPerformed(java.awt.event.ActionEvent e) {
                    System.exit(0);
                }
            });
        }
        return menuInici2;
    }

    private JMenuItem getMenuMantenimiento1() {
        if (menuMantenimiento1 == null) {
            menuMantenimiento1 = new JMenuItem();
            menuMantenimiento1.setText(txt.getMessage("menu.mantenimiento.item1"));
            menuMantenimiento1.addActionListener(new java.awt.event.ActionListener() {

                public void actionPerformed(java.awt.event.ActionEvent e) {
                    initialize(2);
                }
            });
        }
        return menuMantenimiento1;
    }

    private JMenuItem getMenuMantenimiento2() {
        if (menuMantenimiento2 == null) {
            menuMantenimiento2 = new JMenuItem();
            menuMantenimiento2.setText(txt.getMessage("menu.mantenimiento.item2"));
            menuMantenimiento2.addActionListener(new java.awt.event.ActionListener() {

                public void actionPerformed(java.awt.event.ActionEvent e) {
                    initialize(3);
                }
            });
        }
        return menuMantenimiento2;
    }

    private JMenu getMenuEventos() {
        if (menuEventos == null) {
            menuEventos = new JMenu();
            menuEventos.setText(txt.getMessage("menu.eventos"));
            menuEventos.add(getMenuEventos1());
        }
        return menuEventos;
    }

    private JMenuItem getMenuEventos1() {
        if (menuEventos1 == null) {
            menuEventos1 = new JMenuItem();
            menuEventos1.setText(txt.getMessage("menu.eventos.item1"));
            menuEventos1.addActionListener(new java.awt.event.ActionListener() {

                public void actionPerformed(java.awt.event.ActionEvent e) {
                    initialize(4);
                }
            });
        }
        return menuEventos1;
    }



    private JMenu getMenuEstadisticas() {
        if (menuEstadisticas == null) {
            menuEstadisticas = new JMenu();
            menuEstadisticas.setText(txt.getMessage("menu.estadisticas"));
            menuEstadisticas.add(getMenuEstadistica1());
            menuEstadisticas.add(getMenuEstadistica2());
            menuEstadisticas.add(getMenuEstadistica3());
            menuEstadisticas.add(getMenuEstadistica4());
        }
        return menuEstadisticas;
    }


    private JMenuItem getMenuEstadistica1() {
        if (menuEstadisticas1 == null) {
            menuEstadisticas1 = new JMenuItem();
            menuEstadisticas1.setText(txt.getMessage("menu.estadisticas.item1"));
            menuEstadisticas1.addActionListener(new java.awt.event.ActionListener() {

                public void actionPerformed(java.awt.event.ActionEvent e) {
                    initialize(5);
                }
            });
        }
        return menuEstadisticas1;
    }



    private JMenuItem getMenuEstadistica2() {
        if (menuEstadisticas2 == null) {
            menuEstadisticas2 = new JMenuItem();
            menuEstadisticas2.setText(txt.getMessage("menu.estadisticas.item2"));
            menuEstadisticas2.addActionListener(new java.awt.event.ActionListener() {

                public void actionPerformed(java.awt.event.ActionEvent e) {
                    initialize(6);
                }
            });
        }
        return menuEstadisticas2;
    }



    private JMenuItem getMenuEstadistica3() {
        if (menuEstadisticas3 == null) {
            menuEstadisticas3 = new JMenuItem();
            menuEstadisticas3.setText(txt.getMessage("menu.estadisticas.item3"));
            menuEstadisticas3.addActionListener(new java.awt.event.ActionListener() {

                public void actionPerformed(java.awt.event.ActionEvent e) {
                    initialize(7);
                }
            });
        }
        return menuEstadisticas3;
    }



    private JMenuItem getMenuEstadistica4() {
        if (menuEstadisticas4 == null) {
            menuEstadisticas4 = new JMenuItem();
            menuEstadisticas4.setText(txt.getMessage("menu.estadisticas.item4"));
            menuEstadisticas4.addActionListener(new java.awt.event.ActionListener() {

                public void actionPerformed(java.awt.event.ActionEvent e) {
                    initialize(8);
                }
            });
        }
        return menuEstadisticas4;
    }


    private JMenu getMenuInscripciones() {
        if (menuInscripciones == null) {
            menuInscripciones = new JMenu();
            menuInscripciones.setText(txt.getMessage("menu.inscripciones"));
            menuInscripciones.add(getMenuInscripciones1());
            menuInscripciones.add(getMenuInscripciones2());
        }
        return menuInscripciones;
    }


    private JMenuItem getMenuInscripciones1() {
       
        if (menuInscripciones1 == null) {
            menuInscripciones1 = new JMenuItem();
            menuInscripciones1.setText(txt.getMessage("menu.inscripciones.item1"));
            menuInscripciones1.addActionListener(new java.awt.event.ActionListener() {

                public void actionPerformed(java.awt.event.ActionEvent e) {
                    initialize(9);
                }
            });
        }
        return menuInscripciones1;
    }

    private JMenuItem getMenuInscripciones2() {

        if (menuInscripciones2 == null) {
            menuInscripciones2 = new JMenuItem();
            menuInscripciones2.setText(txt.getMessage("menu.inscripciones.item2"));
            menuInscripciones2.addActionListener(new java.awt.event.ActionListener() {

                public void actionPerformed(java.awt.event.ActionEvent e) {
                    initialize(10);
                }
            });
        }
        return menuInscripciones2;
    }

    
    public static void main(String[] args) {
      

        SwingUtilities.invokeLater(new Runnable() {

            public void run() {
                Cliente thisClass = new Cliente();
                thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                thisClass.setVisible(true);
            }
        });
    }
}
